package com.tfjybj.itoo.exam.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dmsdbj.itoo.tool.redis.CacheExpire;
import com.tfjybj.itoo.exam.entity.CourseEntity;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * CourseDao接口
 * course表
 *
 * @author 杨江涛
 * @version 2.0.0
 * @since 2.0.0 2018-11-24 15:14:12
 */
@Repository("courseDao")
public interface CourseDao extends BaseMapper<CourseEntity> {
    /**
     * 查询当前学年课程信息
     *
     * @param id id
     * @return CourseEntity
     * @author 杨江涛
     * @since 2018-11-24 20:21:21
     */
    CourseEntity findCourse(@Param("id") String id);

    /**
     * 根据课程id查询课程信息
     *
     * @param id id
     * @return CourseEntity
     * @author 杨江涛
     * @since 2018-11-24 20:21:21
     */
    CourseEntity findByCourseId(@Param("id") String id);

    /**
     * 根据id查询课程名称返回list类型
     *
     * @param id 主键id
     * @return 课程信息
     * @author 杨江涛
     * @since 2.0.0  2018-12-4 17:06:08
     */
    @Cacheable(value = "getByCourseId", unless = "#result == null || #result.size()==0")
    @CacheExpire(expire = 120)
    List<CourseEntity> getByCourseId(@Param("id") String id);

    /**
     * 根据参数模糊查询课程名称返回list类型
     *
     * @param searchInfo 模糊查询条件（课程名称/课程代码）searchInfo
     * @return 根据参数模糊查询课程名称返回list类型
     * @author 杨江涛
     * @since 2.0.0  2018-12-6 14:50:58
     */
    List<CourseEntity> getCourse(@Param("searchInfo") String searchInfo);

    /**
     * 创建考试查询课程,无参查询
     *
     * @param semester      semester
     * @param institutionId institutionId
     * @return List<CourseEntity>
     * @author maying
     * @since 2018-12-8 21:42:00
     */
    List<CourseEntity> inquiryCourse(@Param("semester") String semester, @Param("institutionId") String institutionId);

    /**
     * 课程练习-查询所有属于课程练习的课程
     *
     * @return 是否查询成功
     * @author 贾建清
     * @since 2.0.0 2019-3-24 09:51:24
     */
    List<CourseEntity> queryCourseAll();
}
